home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Logiciels PC 7
/
logiciel pc 7.iso
/
Linux
/
Prog_Gtk
/
element.c
< prev
next >
Wrap
C/C++ Source or Header
|
1999-02-08
|
3KB
|
89 lines
#include "element.h"
/*
* La liste des images presente sur la jaquette
* on ne peut depasser 10 images pour l'instant
*/
objetImage listImages[10];
int nbElem;
extern GdkPixmap *pixmap;
extern GtkWidget* window;
extern GtkWidget *zoneDessin;
/* Cree une nouvelle image a partir du fichier nomFichier
* et l'ajoute dans la liste listImages.
*/
void createImage (char* nomFichier)
{
FILE* fichier;
GtkStyle *style;
int res=0;
/* On verifie que l'on n'a pas deja plus de 10 images.
* Attention, on ne verifie pas si l'image a bien pu
* etre chargee !!!
*/
if (nbElem < 10)
{
/* On recupere le style de la fenetre de base */
style = gtk_widget_get_style( window );
/* On cree un pixmap a partir de l'image selectionnee */
listImages[nbElem].pixmap =
gdk_pixmap_create_from_xpm(window->window,
&listImages[nbElem].mask,
NULL,
nomFichier );
/* petite bidouille pour recuperer la taille de l'image
*/
fichier = fopen(nomFichier, "r");
while ((res=fgetc(fichier))!= (int)'\"') {}
fscanf (fichier, "%d %d", &listImages[nbElem].largeur,
&listImages[nbElem].hauteur);
close(fichier);
/* Par defaut, on positionne l'image dans le coin
* superieur gauche.*/
listImages[nbElem].posX=0;
listImages[nbElem].posY=0;
/* On incremente le nombre d'elements */
nbElem++;
}
}
/* On affiche l'image obj dans la pixmap servant au
* double buffer.
*/
void afficherImage(objetImage* obj, GtkWidget* zone)
{
GdkGC *gc;
/* On recupere le graphic contest */
gc = zone->style->fg_gc[GTK_STATE_NORMAL];
/* On recupere le mask pour l'image
* Cela permet de gerer la transparence d'une image
*/
gdk_gc_set_clip_mask (gc, obj->mask);
/* on modifie la position initial du mask */
gdk_gc_set_clip_origin (gc, obj->posX, obj->posY);
/* On dessine l'image dans la pixmap */
gdk_draw_pixmap (pixmap,
zone->style->fg_gc[GTK_STATE_NORMAL],
obj->pixmap,
0, 0,
obj->posX, obj->posY,
obj->largeur, obj->hauteur);
/* On efface le mask */
gdk_gc_set_clip_mask (gc, NULL);
}